package cn.line5.organization;

import java.util.List;
import java.util.Map;

import cn.line5.seam.db.PageResult;

/**
 * <h1>机构用户业务层接口类</h1>
 * 
 * @author Liu,Xiaojun
 */
public interface OrganizationService {
	/**
	 * 获取机构的所有列表-递归方法
	 */
	public List<OrganizationVo> getOrganizationList(String parentId);

	/**
	 * 获取树的JS代码
	 */
	public String getOrganizationTreeJs();

	/**
	 * 获取机构下拉菜单的html代码-递归方法
	 */
	public String getOrganizationSelectHtml(String parentId, String t);

	/**
	 * 获取设置权限的模块功能的所有列表html-递归方法
	 */
	public String getModuleHtml(String parentId, Map<String, PermissionVo> map);

	/**
	 * 机构列表
	 */
	public PageResult<OrganizationVo> getOrganizationPageList(String parentId,
			String currentPage);

	/**
	 * 获取机构信息
	 */
	public OrganizationVo getOrganization(String organizationId);

	/**
	 * 添加机构
	 */
	public Boolean addOrganization(OrganizationVo vo);

	/**
	 * 修改机构
	 */
	public Boolean modifyOrganization(OrganizationVo vo);

	/**
	 * 机构向上排序
	 */
	public Boolean upOrganization(String organizationId);

	/**
	 * 机构向下排序
	 */
	public Boolean downOrganization(String organizationId);

	/**
	 * 删除机构
	 */
	public Boolean deleteOrganization(String[] organizationIds);

	/**
	 * 用户列表
	 */
	public PageResult<UserVo> getUserPageList(String organizationId,
			String currentPage);

	/**
	 * 获取用户信息
	 */
	public UserVo getUser(String userId);

	/**
	 * 检测用户名是否被占用
	 */
	public Boolean checkLoginName(String loginName);

	/**
	 * 检测机构下是否有用户
	 */
	public Boolean checkHaveUser(String[] organizationIds);

	/**
	 * 添加用户
	 */
	public Boolean addUser(UserVo vo);

	/**
	 * 修改用户
	 */
	public Boolean modifyUser(UserVo vo);

	/**
	 * 锁定用户
	 */
	public Boolean lockUser(String[] userIds);

	/**
	 * 解除锁定用户
	 */
	public Boolean unlockUser(String[] userIds);

	/**
	 * 初始化用户密码
	 */
	public Boolean resetUserPassword(String[] userIds);

	/**
	 * 删除用户
	 */
	public Boolean deleteUser(String[] userIds);

	/**
	 * 调整机构
	 */
	public Boolean changeOrganization(String[] userIds, String newOrganizationId);

	/**
	 * 设置用户权限
	 */
	public Boolean setPermission(String userId, String[] permissionModuleIds,
			String[] permissionFunctionIds);
}
